" All system-wide defaults are set in $VIMRUNTIME/debian.vim and sourced by
" the call to :runtime you can find below.  If you wish to change any of those
" settings, you should do it in this file (/etc/vim/vimrc), since debian.vim
" will be overwritten everytime an upgrade of the vim packages is performed.
" It is recommended to make changes after sourcing debian.vim since it alters
" the value of the 'compatible' option.

" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
runtime! debian.vim

" Uncomment the next line to make Vim more Vi-compatible
" NOTE: debian.vim sets 'nocompatible'.  Setting 'compatible' changes numerous
" options, so any other options should be set AFTER setting 'compatible'.
"set compatible

" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
if has("syntax")
  syntax on
endif

" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
"set background=dark

" Uncomment the following to have Vim jump to the last position when
" reopening a file
"if has("autocmd")
"  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
"endif

" Uncomment the following to have Vim load indentation rules and plugins
" according to the detected filetype.
"if has("autocmd")
"  filetype plugin indent on
"endif

" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
set showcmd		" Show (partial) command in status line.
set showmatch		" Show matching brackets.
set ignorecase		" Do case insensitive matching
set smartcase		" Do smart case matching
set incsearch		" Incremental search
set autowrite		" Automatically save before commands like :next and :make
"set hidden		" Hide buffers when they are abandoned
"set mouse=a		" Enable mouse usage (all modes)

" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")
  source /etc/vim/vimrc.local
endif
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent
set cindent
set number
set scrolloff=8
set ruler
set hlsearch
set cursorline
filetype plugin indent on
set completeopt=longest,menu
set wildmenu

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Autocmds
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
autocmd FileType c,cpp nnoremap <buffer> <leader>c I//<esc>
autocmd FileType python nnoremap <buffer> <leader>c I#<esc>

" Windows configurations
set guifont=Consolas:h12:cANSI:qDRAFT
colorscheme torte
set vb t_vb=
au GuiEnter * set t_vb=
set backspace=indent,eol,start
autocmd GUIEnter * simalt ~x
"Toggle Menu and Toolbar
set guioptions-=m
set guioptions-=T
map <silent> <F2> :if &guioptions =~# 'T' <Bar>
        \set guioptions-=T <Bar>
        \set guioptions-=m <bar>
    \else <Bar>
        \set guioptions+=T <Bar>
        \set guioptions+=m <Bar>
    \endif<CR>

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Mappings
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let mapleader="-"
nnoremap <leader>ev :vsplit $MYVIMRC<cr>
nnoremap <leader>sv :source $MYVIMRC<cr>
nnoremap <leader>" viw<esc>a"<esc>bi"<esc>lel
nnoremap <leader>' viw<esc>a'<esc>bi'<esc>lel
nnoremap <leader>u viwUe
nnoremap <c-n> :tabnext<cr>
inoremap jk <esc>
inoremap <esc> <nop>
inoremap <leader>u <esc>viwUea
inoremap <leader>d <esc>dd$a
inoremap {<cr> {<cr>}<esc>O
nnoremap <leader>sw :FSHere<cr>

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Quick Compile
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
map <c-F5> :call CompileRunGcc()<CR>
map <c-F7> :call Compile()<CR>

func! CompileRunGcc()
    exec "w" 
    if &filetype == 'c' 
        exec '!g++ % -o %<.exe'
        exec '!%<.exe'
    elseif &filetype == 'cpp'
        exec '!g++ % -o %<.exe'
        exec '!%<.exe'
    elseif &filetype == 'python'
        exec '!python %'
    endif                                                                              
endfunc 

func! Compile()
	exec "w"
	if &filetype == 'c'
		exec '!g++ %'
	elseif &filetype == 'cpp'
		exec '!g++ %'
	endif
endfunc

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Abbrevations
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
iabbrev waht what
autocmd FileType c,cpp :iabbrev	incldue include
autocmd FileType c,cpp :iabbrev nwe new
autocmd FileType c,cpp :iabbrev mian main
autocmd FileType c,cpp :iabbrev whiel while
autocmd FileType c,cpp :iabbrev eles else


iabbrev ssig -- <cr>Invoker Zhang<cr>InvokerZhang@outlook.com

let g:instant_markdown_slow = 1
let g:instant_markdown_autostart = 0

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vundle & Plugins
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
filetype off
set rtp+=$HOME/.vim/bundle/Vundle.vim
call vundle#begin('$HOME/.vim/bundle/')
Plugin 'VundleVim/Vundle.vim'
Plugin 'godlygeek/tabular'
Plugin 'plasticboy/vim-markdown'
Plugin 'suan/vim-instant-markdown'
Plugin 'ervandew/supertab'
Plugin 'derekwyatt/vim-fswitch'
call vundle#end()
filetype plugin indent on

